<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let arr = [1, 3, 5, 7];
        // arr.forEach((current, index, array) => {
        //     console.log(current, index, array);
        // });

        console.log('-----------------------------');

        // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
        /* 
            语法：
                arr.reduce(callbackFn,initValue);
        */
        // 1. 无初始值
        let temp1 = arr.reduce((previous, current, index, array) => {
            // console.log(previous, current, index, array);
            // return 1;
            return previous + current;
        });
        console.log(temp1);

        // 2. 有初始值
        let temp2 = arr.reduce((previous, current, index, array) => {
            console.log(previous, current, index, array);
            // return 1;
            return previous + current;
        }, 10);

        console.log(temp2);

        /*
            总结：
                1. previous 上一次调用 callbackFn 时的返回值。
                2. 返回值：使用 reduce 回调函数遍历整个数组后的结果。
                3. initValue : 遍历的初始值


            一个 “reducer” 函数，包含四个参数：

previousValue：
          上一次调用 callbackFn 时的返回值。在第一次调用时，若指定了初始值 initialValue，
         其值则为 initialValue，否则为数组索引为 0 的元素 array[0]。

currentValue：
            数组中正在处理的元素。在第一次调用时，若指定了初始值 initialValue，其值则为数组索引为 0 的元素 array[0]，否则为 array[1]。
currentIndex：
            数组中正在处理的元素的索引。若指定了初始值 initialValue，则起始索引号为 0，否则从索引 1 起始。

array：用于遍历的数组。




        */

    </script>
</body>

</html>